// 路由的处理函数
// 导入db文件夹下面 index.js
const db = require("../db/index");

// 获取文章分类
module.exports.getArticleCate = (req, res) => {
  // 获取所有的文章 但是需要注意 不包括 标记删除的文章
  // 构建sql语句
  const sql = "select * from ev_article_cate where is_delete = 0 order by id asc";
  // 执行sql
  db.query(sql, (err, data) => {
    if (err) return res.cc(err);
    if (data.length === 0) return res.cc("没有数据");
    // 将数据响应给客户端
    res.send({
      status: 0,
      message: "文章分类获取成功",
      data
    });
  });
};

// 添加文章分类
module.exports.addArticleCate = (req, res) => {
  const sql = "select * from ev_article_cate where name=? or alias=?";
  // 查重 执行sql
  db.query(sql, [req.body.name, req.body.alias], (err, data) => {
    if (err) return res.cc(err);
    if (data.length === 2) return res.cc("分类名称与分类的别名同时被占用了，请更换");
    if (data.length === 1 && data[0].name === req.body.name && data[0].alias === req.body.alias) return res.cc("分类名称与分类的别名同时被占用了2，请更换");
    if (data.length === 1 && data[0].name === req.body.name) return res.cc("分类名称已经被占用了，请更换");
    if (data.length === 1 && data[0].alias === req.body.alias) return res.cc("分类别名已经被占用了，请更换");
    // TODO 表示没有被占用
    const insertSql = "insert into ev_article_cate set ?";
    // 执行sql语句
    db.query(insertSql, req.body, (err, data) => {
      // sql语句错误
      if (err) return res.cc(err);
      if (data.affectedRows !== 1) return res.cc("新增分类失败");
      res.cc("新增分类成功", 0);
    });
  });
};

// 删除文章分类
module.exports.delArtCateById = (req, res) => {
  // 构建sql语句
  const delSql = "delete from ev_article_cate where Id = ?";
  // 执行sql
  db.query(delSql, req.params.id, (err, data) => {
    if (err) return res.cc(err);
    if (data.affectedRows !== 1) return res.cc("文章分类删除失败");
    res.cc("文章分类删除成功", 0);
  });
};

// 根据id获取文章分类
module.exports.getArtCateById = (req, res) => {
  // 构建sql语句
  const selectSql = "select * from ev_article_cate where Id = ? and is_delete = 0";
  // 执行sql
  db.query(selectSql, req.params.id, (err, data) => {
    // sql语句是否有语法错误 sql查询 返回数组 增删改 返回受影响 的行数
    if (err) return res.cc(err);
    if (data.length === 0) return res.cc("根据id获取文章分类失败");
    res.send({
      status: 0,
      message: "根据id获取文章分类成功",
      data
    });
  });
};

// 根据id获取更新文章分类的名称和别名
module.exports.updateArtCateById = (req, res) => {
  // 构建sql语句
  const selectSql = "select * from ev_article_cate where Id <> ? and (name=? or alias=?)";
  // 执行sql语句
  db.query(selectSql, [req.body.id, req.body.name, req.body.alias], (err, data) => {
    if (err) return res.cc(err);
    if (data.length === 2) return res.cc("分类名称与分类的别名同时被占用了，请更换");
    if (data.length === 1 && data[0].name === req.body.name && data[0].alias === req.body.alias) return res.cc("分类名称与分类的别名同时被占用了2，请更换");
    if (data.length === 1 && data[0].name === req.body.name) return res.cc("分类名称已经被占用了，请更换");
    if (data.length === 1 && data[0].alias === req.body.alias) return res.cc("分类别名已经被占用了，请更换");
    // TODO 表示没有被占用
    // 构建sql语句来更新对应数据
    const updateSql = "update ev_article_cate set ? where Id = ?";
    // 执行sql
    db.query(updateSql, [req.body, req.body.id], (err, data) => {
      if (err) return res.cc(err);
      if (data.affectedRows !== 1) res.cc("更新失败");
      res.cc("更新成功", 0);
    });
  });
};



// select 字段1,字段2 from 表1 left join 表2 
// 文章分类表 有文章分类所属 id    文章表里面有一个字段 cate_id 这篇文章所属的文章分类

